#define _CRT_SECURE_NO_WARNINGS 1
#include<cstdlib>
#include<unordered_map>
#include"unordered_map.hpp"
#include"unordered_set.hpp"
void Test1()
{
	//HashTable<int, int> ht;
	/*ht.insert(make_pair(10, 10));
	ht.insert(make_pair(11, 11));
	ht.insert(make_pair(43, 43));
	ht.insert(make_pair(22, 22));
	ht.insert(make_pair(13, 13));
	ht.insert(make_pair(3, 3));
	ht.insert(make_pair(9, 9));
	ht.insert(make_pair(19, 19));
	ht.insert(make_pair(29, 29));
	ht.insert(make_pair(39, 39));
	ht.insert(make_pair(49, 49));
	ht.insert(make_pair(59, 59));
	ht.insert(make_pair(69, 69));
	ht.erase(49);
	ht.erase(59);*/

}
void Test2()
{
	auto v = new vector<int>;
	v->push_back(1);
	v->push_back(2);
	v->push_back(3);
	v->push_back(4);
	cout<<v->operator[](2);
}
void Test3()
{
	//HashTable<string, int> ht;
	/*cout<<ht.insert(make_pair("abcd", 10));
	cout << ht.insert(make_pair("abcc", 11));
	cout << ht.insert(make_pair("abdd", 43));
	cout << ht.insert(make_pair("dcba", 22));
	cout << ht.insert(make_pair("aaaa", 13));
	cout << ht.insert(make_pair("acca", 3));
	cout << ht.insert(make_pair("bsdd", 9));
	cout << ht.insert(make_pair("ddaa", 19));
	cout << ht.insert(make_pair("aadd", 29));
	cout << ht.insert(make_pair("bbaa", 39));
	cout << ht.insert(make_pair("aabb", 49));
	cout << ht.insert(make_pair("adcb", 59));
	cout << ht.insert(make_pair("bcda", 69));*/
}
void Test4()
{
	//int N = 10000000;
	//srand(time(0));
	//HashTable<int, int> ht;
	////unordered_map<int, int> ht;
	//int count = 0;
	//for (int i = 0;i < N;i++)
	//{
	//	int in = rand();
	//	ht.insert(make_pair(in, in));
	//}
	//cout << ht.size() << " " << count;
}
void Test5()
{
	MyUnordered_Map<int, int> m;
	m.insert(make_pair(21, 21));
	m.insert(make_pair(8, 8));
	m.insert(make_pair(10, 10));
	m.insert(make_pair(77, 77));
	m.insert(make_pair(3, 3));
	m.insert(make_pair(9, 9));
	m.insert(make_pair(11, 11));
	m.insert(make_pair(6, 6));
	m.insert(make_pair(13, 13));
	m.insert(make_pair(22, 22));
	m.insert(make_pair(31, 31));
	for (auto a : m)
	{
		cout << a.first << " ";
	}
	cout << endl;

	m.erase(13);
	m.erase(9);
	m.erase(3);
	m.erase(100);

	for (auto a : m)
	{
		cout << a.first << " ";
	}
	cout << endl;

	m.find(31);
}
void Test6()
{
	MyUnordered_Set<int> s;
	s.insert(21);
	s.insert(8);
	s.insert(10);
	s.insert(77);
	s.insert(3);
	s.insert(9);
	s.insert(11);
	s.insert(6);
	s.insert(13);
	s.insert(22);
	s.insert(31);
	for (auto a : s)
	{
		cout << a << " ";
	}
	cout << endl;

	s.erase(13);
	s.erase(9);
	s.erase(3);
	s.erase(100);

	for (auto a : s)
	{
		cout << a << " ";
	}
	cout << endl;
	auto ret = s.find(31);
	cout << *ret << endl;
}
void Test7()
{
	MyUnordered_Map<int, int> m;
	int N = 100000000;
	srand(time(0));
	for (int i = 0;i < N;i++)
	{
		int a = rand() % 100;
		int in = rand()*a;
		m[a]++;
	}
}
int main()
{
	Test7();
	return 0;
}